package com.docmgmt.mvp.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * AI问答响应
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AiChatResponse {

    /**
     * 对话ID（UUID格式）
     */
    @JsonProperty("conversationId")
    private String conversationId;

    /**
     * 对话记录ID（v3.1新增，用于前端续接会话）
     */
    @JsonProperty("dialogId")
    private Long dialogId;

    /**
     * AI答案
     */
    private String answer;

    /**
     * 文档引用
     */
    private List<DocumentReference> references;

    /**
     * 查询的知识库ID列表
     */
    @JsonProperty("queriedKbIds")
    private List<String> queriedKbIds;

    /**
     * 查询的知识库名称列表
     */
    @JsonProperty("queriedKbNames")
    private List<String> queriedKbNames;

    /**
     * 使用的token数
     */
    @JsonProperty("tokensUsed")
    private Integer tokensUsed;

    /**
     * 响应时间（秒）
     */
    @JsonProperty("responseTime")
    private Double responseTime;

    /**
     * 文档引用
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class DocumentReference {
        /**
         * 文件ID
         */
        @JsonProperty("fileId")
        private Long fileId;

        /**
         * 文件名
         */
        @JsonProperty("fileName")
        private String fileName;

        /**
         * 文件夹路径
         */
        @JsonProperty("folderPath")
        private String folderPath;

        /**
         * 引用内容
         */
        private String content;

        /**
         * 相似度得分
         */
        private Double similarity;

        /**
         * 页码
         */
        private Integer page;

        /**
         * 下载URL
         */
        @JsonProperty("downloadUrl")
        private String downloadUrl;

        /**
         * 预览URL
         */
        @JsonProperty("previewUrl")
        private String previewUrl;
    }
}
